﻿using System;
using System.ComponentModel;
using System.Windows.Forms;
using OwnZTec.LojaDelivery.Data;

namespace OwnZTec.LojaDelivery.UI.WinForms
{
    public partial class FrmPerfil : OwnZForm
    {
        #region -- Membros e Construtores -------------------------------------------------------------------------------------------------
        public FrmPerfis Pai
        {
            get;
            set;
        }

        public bool Edicao
        {
            get;
            set;
        }

        private bool _alterado;

        public tbPerfil Perfil
        {
            get;
            set;
        }

        public FrmPerfil()
        {
            InitializeComponent();
            this.ConfigurarFormFilho();
        }

        private void FrmPerfil_Load(object sender, EventArgs e)
        {
            Carregar();
        } 
        #endregion ------------------------------------------------------------------------------------------------------------------------

        #region -- Eventos ----------------------------------------------------------------------------------------------------------------
        private void txtNome_Validating(object sender, CancelEventArgs e)
        {
            if (txtNome.Text.EhNuloOuVazio())
            {
                erpErro.SetError(txtNome, "Informar o nome do perfil");
                e.Cancel = true;
                return;
            }

            erpErro.SetError(txtNome, "");
        }

        private void txtNome_TextChanged(object sender, EventArgs e)
        {
            _alterado = true;
        }

        private void cmdSalvar_Click(object sender, EventArgs e)
        {
            Salvar();
            Close();
        }

        private void cmdSair_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void FrmPerfil_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!_alterado)
                return;

            var res = Contexto.MainForm.ExibirMensagemSairSemSalvar();

            if (res != DialogResult.Yes)
            {
                e.Cancel = true;
                return;
            }

            Dispose();
        }
        #endregion ------------------------------------------------------------------------------------------------------------------------

        #region -- Metodos ----------------------------------------------------------------------------------------------------------------
        private void Salvar()
        {
            Perfil.desPerfil = txtNome.Text;

            if (!Edicao)
                Contexto.Db.tbPerfils.AddObject(Perfil);

            Contexto.Db.SaveChanges();

            Edicao = true;

            _alterado = false;

            Pai.AtualizarGrid();
        }

        private void Carregar()
        {
            if (Edicao)
                txtNome.Text = Perfil.desPerfil;
            else
                Perfil = new tbPerfil();

            _alterado = false;
        }
        #endregion ------------------------------------------------------------------------------------------------------------------------
    }
}
